import store from '@/store'
import router from '@/router'

function handleErrorStatus(vm, status) {
  switch (status) {
    case 401:
      vm.$message.warning('登录会话已超时，请重新登录。')
      store.dispatch('auth/logout').then(_ => {
        vm.$router.replace({ name: 'login' })
      })
      return true
    case 403:
      vm.$router.replace({ name: '403' })
      return true
    case 409:
      vm.$message.error('提交了重复的内容')
      return true
    case 500:
      vm.$message.error('服务器发生了一个错误，请稍后再试')
      return true
  }
  return false
}

function handleErrorCode(vm, code, message) {
  vm.$message.error(`${message}`)
  return true
}

export default function (err, vm = null) {
  vm = vm || router.app
  if (vm.$isApiError(err)) {
    const { code, message, status } = err
    if (handleErrorStatus(vm, status) || handleErrorCode(vm, code, message)) {
      return
    }
  }
  console.error(err)
}
